home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / var / lib / dpkg / info / module-init-tools.postinst < prev    next >
Text File  |  2008-10-14  |  4KB  |  167 lines

  1. #!/bin/sh -e
  2.  
  3. create_etc_modules() {
  4.     if [ ! -e /etc/modules ]; then
  5.     cat <<EOT > /etc/modules
  6. # /etc/modules: kernel modules to load at boot time.
  7. #
  8. # This file contains the names of kernel modules that should be loaded
  9. # at boot time, one per line. Lines beginning with "#" are ignored.
  10.  
  11. EOT
  12.     chmod 644 /etc/modules
  13.     fi
  14. }
  15.  
  16. archmodel() { 
  17.   local arch=$(uname -m)
  18.   case $arch in
  19.   i[0-9]86)    arch=i386 ;;
  20.   x86_64|amd64)    arch=x86_64 ;;
  21.   arm*)        arch=arm ;;
  22.   mips*)    arch=mips ;;
  23.   # 64 bit variants of some architectures are treated like the 32 bit
  24.   s390x)    arch=s390 ;;
  25.   parisc64)    arch=parisc ;;
  26.   sparc64)    arch=sparc ;;
  27.   # these architectures have variants with wildly different hardware
  28.   ppc64)    arch=powerpc.generic ;;
  29.   ppc|powerpc)
  30.     if [ -f /proc/cpuinfo ]; then
  31.       model=$(sed -ne 's/^machine[[:space:]]*:[[:space:]]*//p' /proc/cpuinfo)
  32.     else
  33.       echo "/proc/cpuinfo does not exist, assuming generic powerpc system"
  34.     fi
  35.     case "$model" in
  36.       Amiga*) arch="powerpc.apus" ;;
  37.       Power*) arch="powerpc.pmac" ;; 
  38.       *)      arch="powerpc.generic" ;;
  39.     esac
  40.     ;;
  41.   m68k)
  42.     if [ -f /proc/hardware ]; then
  43.       model=$(sed -ne 's/^Model:[[:space:]]*//p' /proc/hardware)
  44.     else
  45.       echo "/proc/hardware does not exist, assuming generic m68k system"
  46.     fi
  47.     case "$model" in
  48.       Atari*)        arch="m68k.atari" ;;
  49.       Amiga*)        arch="m68k.amiga" ;;
  50.       *)        arch="m68k.generic" ;;
  51.     esac
  52.     ;;
  53.   esac
  54.  
  55.   echo $arch
  56. }
  57.  
  58. create_arch_symlink() {
  59.   cd /etc/modprobe.d/
  60.  
  61.   model=$(archmodel)
  62.   oldmodel=$model
  63.  
  64.   while [ ! -f arch/$model ]; do
  65.     oldmodel=$model
  66.     model=${oldmodel%.*}.generic
  67.     [ "$model" = "$oldmodel" ] && break
  68.     echo "Configuration for $oldmodel not found, trying $model"
  69.   done
  70.  
  71.   ARCHCONFFILE=arch/$model
  72.   if [ -f $ARCHCONFFILE ]; then
  73.     ln -sf $ARCHCONFFILE arch-aliases
  74.   else
  75.     echo "Architecture-specific config file not found"
  76.   fi
  77. }
  78.  
  79. remove_compat_symlinks() {
  80.   for file in /bin/lsmod.modutils /sbin/ksyms /sbin/kallsyms; do
  81.     [ -L $file ] && rm $file
  82.   done
  83.   return 0
  84. }
  85.  
  86. undivert_gen() {
  87.   DEXT=${3:-modutils}
  88.   dpkg-divert --remove --rename --package module-init-tools \
  89.     --divert $2/$1.$DEXT $2/$1 > /dev/null
  90. }
  91.  
  92. undivert_man() {
  93.   DSECTION=${2:-8}
  94.   for locale in '' fr/; do
  95.     dpkg-divert --remove --rename --package module-init-tools --divert \
  96.       /usr/share/man/${locale}man$DSECTION/$1.modutils.$DSECTION.gz \
  97.       /usr/share/man/${locale}man$DSECTION/$1.$DSECTION.gz > /dev/null
  98.   done
  99. }
  100.  
  101. big_modutils_cleanup() {
  102.   remove_compat_symlinks
  103.  
  104.   # When a diverted file is removed from a package, old version of dpkg forget
  105.   # to delete it. See #428650 for the gory details.
  106.   rm -f /usr/share/man/fr/man5/modules.modutils.5.gz \
  107.     /usr/share/man/fr/man8/*.modutils.8.gz
  108.   undivert_man modules 5
  109.  
  110.   for cmd in depmod insmod update-modules modinfo; do
  111.     undivert_gen $cmd /sbin
  112.     undivert_man $cmd
  113.   done
  114.   for cmd in kallsyms ksyms; do
  115.     undivert_gen $cmd /sbin
  116.   done
  117.   for cmd in lsmod modprobe rmmod; do
  118.     rm -f /sbin/$cmd.modutils
  119.     undivert_gen $cmd /sbin Lmodutils
  120.     undivert_man $cmd
  121.   done
  122.  
  123.   # modutils forgets to delete this file on purge
  124.   rm -f /etc/rcS.d/S20modutils
  125. }
  126.  
  127. upgrade_quirks() {
  128.   [ "$2" ] || return 0
  129.   if dpkg --compare-versions "$2" le "3.2.2-3ubuntu3"; then
  130.     rm -f /etc/modprobe.d/blacklist-pata
  131.   fi
  132.   if dpkg --compare-versions "$2" eq "3.3-pre3-1ubuntu4"; then
  133.     rm -f /etc/modprobe.d/blacklist-ipv6
  134.   fi
  135.   dpkg --compare-versions $2 lt 3.3-pre11-4 || return 0
  136.   # finally remove the diversions of modutils
  137.   big_modutils_cleanup
  138.  
  139.   return 0
  140. }
  141.  
  142. case "$1" in
  143.     configure)
  144.     create_etc_modules
  145.     create_arch_symlink
  146.  
  147.     upgrade_quirks "$@"
  148.     ;;
  149.  
  150.     abort-upgrade|abort-remove|abort-deconfigure)
  151.     ;;
  152.  
  153.     *)
  154.     echo "$0 called with unknown argument '$1'" >&2
  155.     exit 1
  156.     ;;
  157. esac
  158.  
  159. # Automatically added by dh_installinit
  160. if [ -x "/etc/init.d/module-init-tools" ]; then
  161.     update-rc.d module-init-tools start 15 S . >/dev/null || exit $?
  162. fi
  163. # End automatically added section
  164.  
  165.  
  166. exit 0
  167.